#pragma once
#include <stdint.h>
#pragma pack(push, 1)

// 消息头部
struct cgzHeader
{
    uint16_t mid; // 消息编号
    uint16_t len; // 消息长度-不含头部
    uint16_t all; // 消息长度-包含头部
    uint64_t cid; // 消息凭证-异步回调
};

struct cgzGateHeader : public cgzHeader
{
    int ufd; // 客户端ufd
};

// 转发目标类型
enum cgzETask
{
    CLua,       // Lua服务
    CTimer,     // 定时器
    CTcpC,      // TCP客户端
    CTcpGateC,  // TCP网关客户端
    CTcpS,      // TCP服务器
    CAsioTcpS,  // TCP服务器
    CTcpGateS,  // TCP网关服务器
    CTcpWC,     // WebSocket客户端
    CTcpGateWC, // WebSocket客户端
    CTcpWS,     // WebSocket服务器
    CTcpGateWS, // WebSocket服务器
    CHRedis,    // Redis客户端
    CMysql,     // Mysql客户端
    ClickHouse, // click客户端
    CMongo,     // Mongo客户端
    CHttpC,     // HTTP客户端
    CHttpS,     // HTTP服务器
    CSpdLog,    // spdlog服务
};

#pragma pack(pop)